﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Policlinica;
using OSA.Policlinic.BusinessApplication.Registry;
using NLog;

namespace OSA.Policlinic.UI.WFApplication
{
    public partial class NewInsuranceOrganisation : UserControl
    {
        private IRegistryBusinessApplication registryBusinessApplication;
        private AddPatientDataForm owner;
        private static Logger logger = LogManager.GetCurrentClassLogger();

        public NewInsuranceOrganisation(AddPatientDataForm f)
        {
            InitializeComponent();
            registryBusinessApplication = RegistryBusinessApplicationHome.GetInstanse();
            owner = f;
            logger.Trace("Контрол NewInsuranceOrganisation успешно инициализирован");
        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
            logger.Debug("Нажата кнопка 'Сохранить' формы добавления новой страховой компании NewInsuranceOrganisation");
            if (IsTextBoxEmpty)
            {
                string error = "Не заполнены следующие поля:\n";
                if (IndexTextBox.Text.Trim().Length == 0) { error += "Почтовый индекс\n"; }
                if (CityTextBox.Text.Trim().Length == 0) { error += "Город\n"; }
                if (StreetTextBox.Text.Trim().Length == 0) { error += "Улица\n"; }
                if (HouseTextBox.Text.Trim().Length == 0) { error += "Дом\n"; }
                if (FlatTextBox.Text.Trim().Length == 0) { error += "Квартира\n"; }
                if (InnTextBox.Text.Trim().Length == 0) { error += "ИНН\n"; }
                if (NameTextBox.Text.Trim().Length == 0) { error += "Название"; }
                MessageBox.Show(error, "Внимание!");
                logger.Warn(error + " при попытке сохранения новой страховой организации");
                return;
            }
            int _try = -1;
            if (!int.TryParse(IndexTextBox.Text, out _try) || _try < 1)
            {
                MessageBox.Show("Неправильно заполнено поле 'Почтовый индекс'", "Внимание!");
                logger.Warn("Неправильно заполнено поле 'Почтовый индекс' при попытке сохранения новой страховой организации");
                return;
            }
            _try = -1;
            if(!int.TryParse(FlatTextBox.Text, out _try) || _try < 1)
            {
                MessageBox.Show("Неправильно заполнено поле 'Квартира'", "Внимание!");
                logger.Warn("Неправильно заполнено поле 'Квартира' при попытке сохранения новой страховой организации");
                return;
            }
            _try = -1;
            if (!int.TryParse(InnTextBox.Text, out _try) || _try < 1)
            {
                MessageBox.Show("Неправильно заполнено поле 'Номер полиса'", "Внимание!");
                logger.Warn("Неправильно заполнено поле 'Номер полиса' при попытке сохранения новой страховой организации");
                return;
            }
            if (InnTextBox.Text.Length != 12)
            {
                MessageBox.Show("Длинна ИНН должна быть ровно 12 символов", "Внимание!", MessageBoxButtons.OK);
                logger.Warn("Неправильно заполнено поле 'ИНН' при попытке сохранения новой страховой организации");
            }
            else if (IndexTextBox.Text.Length != 6)
            {
                MessageBox.Show("Длинна индекса должна быть ровно 6 символов", "Внимание!", MessageBoxButtons.OK);
                logger.Warn("Неправильно заполнено поле 'Индекс' при попытке сохранения новой страховой организации");
            }
            else
            {
                Address addr = new Address(IndexTextBox.Text, CountryTextBox.Text,
                    CityTextBox.Text, StreetTextBox.Text, HouseTextBox.Text, FlatTextBox.Text);
                InsuranceOrganization org = new InsuranceOrganization(InnTextBox.Text,
                    NameTextBox.Text, addr);
                registryBusinessApplication.SaveInsuranceOrganisation(org);
                logger.Debug("Новая страховая компания успешно сохранена");
                owner.Close();
            }
        }
        private bool IsTextBoxEmpty
        {
            get
            {
                if (IndexTextBox.Text.Trim().Length == 0 || CountryTextBox.Text.Trim().Length == 0 || CityTextBox.Text.Trim().Length == 0 || StreetTextBox.Text.Trim().Length == 0 || HouseTextBox.Text.Trim().Length == 0 || FlatTextBox.Text.Trim().Length == 0 || InnTextBox.Text.Trim().Length == 0 || NameTextBox.Text.Trim().Length == 0)
                    return true;
                return false;
            }
        }
    }
}
